# Р7 Офис

Произведен анализ PRM-пакетов программного изделия "Р7 Офис" актуальной на 01.07.2023 г. версии.

Пакет рассматривается с точки зрения совместимости с М ОС 12 ([https://os.mos.ru/r/d](https://os.mos.ru/r/d) на пакетной базе ROSA rosa2021.1 (та же, что и у ROSA Fresh/Chrome 12.x).

## Объект тестирования

* пакет [https://download.r7-office.ru/mash/r7-office-7.3.3-188.p8.x86_64_MASH_OS.rpm](https://download.r7-office.ru/mash/r7-office-7.3.3-188.p8.x86_64_MASH_OS.rpm)
* хеш MD5: `f3340c4b842976790ea750880f8359d7`
* версия и релиз пакета (`rpm -qp --qf '%{version}-%{release}\n' r7-office-7.3.3-188.p8.x86_64_MASH_OS.rpm`): 7.3.3-188.p8

## Анализ пакетов

### Анализ скриптлетов пакетов

Ниже приведен код скриптлетов полностью и без изменений:

```
$ rpm -q r7-office-7.3.3-188.p8.x86_64_MASH_OS.rpm --scripts
preinstall scriptlet (using /bin/sh):

if ps cax | grep -i "desktopeditors"
then
    echo "Программа запущена, обновление не возможно. Закройте пожалуйста программу и повторите процедуру обновления"
    notify-send "Desktop Editors" "Программа запущена, обновление не возможно. Закройте пожалуйста программу и повторите процедуру обновления"
    sleep 1
    exit 1
fi
ret=$(ps cax | grep [e]ditors_helper | wc -l)
if [ "$ret" -ne 0 ]
then
    echo "Программа запущена, обновление не возможно. Закройте пожалуйста программу и повторите процедуру обновления"
    notify-send "Desktop Editors" "Программа запущена, обновление не возможно. Закройте пожалуйста программу и повторите процедуру обновления"
    sleep 1
    exit 1
fi
postinstall scriptlet (using /bin/sh):

set -e 		# fail on any error
set -u 		# treat unset variable as errors

UPDATE_MENUS="`which update-menus 2> /dev/null || true`"
if [ -x "$UPDATE_MENUS" ]; then
  update-menus
fi

ln -sf /opt/r7-office/desktopeditors/fonts /usr/share/fonts/r7-office

#// R7 [ CWE-427
if [ -f /etc/rosa-release ]; then
COBALT=$(cat /etc/rosa-release | grep Cobalt | wc -l)
if [ "$COBALT" -ge 1 ]; then 
ln -sf /usr/lib64/libasound.so.2 /opt/r7-office/desktopeditors/libasound.so.2
ln -sf /usr/lib64/libatk-1.0.so.0 /opt/r7-office/desktopeditors/libatk-1.0.so.0
ln -sf /usr/lib64/libatk-bridge-2.0.so.0 /opt/r7-office/desktopeditors/libatk-bridge-2.0.so.0
ln -sf /usr/lib64/libatspi.so.0 /opt/r7-office/desktopeditors/libatspi.so.0
ln -sf /usr/lib64/libblkid.so.1 /opt/r7-office/desktopeditors/libblkid.so.1
ln -sf /usr/lib64/libbrotlicommon.so.1 /opt/r7-office/desktopeditors/libbrotlicommon.so.1
ln -sf /usr/lib64/libbrotlidec.so.1 /opt/r7-office/desktopeditors/libbrotlidec.so.1
ln -sf /usr/lib64/libbz2.so.1 /opt/r7-office/desktopeditors/libbz2.so.1
ln -sf /usr/lib64/libcairo-gobject.so.2 /opt/r7-office/desktopeditors/libcairo-gobject.so.2
ln -sf /usr/lib64/libcairo.so.2 /opt/r7-office/desktopeditors/libcairo.so.2
ln -sf /usr/lib64/libcap.so.2 /opt/r7-office/desktopeditors/libcap.so.2
ln -sf /usr/lib64/libcom_err.so.2 /opt/r7-office/desktopeditors/libcom_err.so.2
ln -sf /usr/lib64/libcrypto.so.1.1 /opt/r7-office/desktopeditors/libcrypto.so.1.1
ln -sf /usr/lib64/libdatrie.so.1 /opt/r7-office/desktopeditors/libdatrie.so.1
ln -sf /usr/lib64/libdbus-1.so.3 /opt/r7-office/desktopeditors/libdbus-1.so.3
ln -sf /usr/lib64/libdl.so.2 /opt/r7-office/desktopeditors/libdl.so.2
ln -sf /usr/lib64/libEGL.so.1 /opt/r7-office/desktopeditors/libEGL.so.1
ln -sf /usr/lib64/libepoxy.so.0 /opt/r7-office/desktopeditors/libepoxy.so.0
ln -sf /usr/lib64/libexpat.so.1 /opt/r7-office/desktopeditors/libexpat.so.1
ln -sf /usr/lib64/libffi.so.6 /opt/r7-office/desktopeditors/libffi.so.6
ln -sf /usr/lib64/libfontconfig.so.1 /opt/r7-office/desktopeditors/libfontconfig.so.1
ln -sf /usr/lib64/libfreetype.so.6 /opt/r7-office/desktopeditors/libfreetype.so.6
ln -sf /usr/lib64/libfribidi.so.0 /opt/r7-office/desktopeditors/libfribidi.so.0
ln -sf /usr/lib64/libgcrypt.so.20 /opt/r7-office/desktopeditors/libgcrypt.so.20
ln -sf /usr/lib64/libgdk-3.so.0 /opt/r7-office/desktopeditors/libgdk-3.so.0
ln -sf /usr/lib64/libgdk_pixbuf-2.0.so.0 /opt/r7-office/desktopeditors/libgdk_pixbuf-2.0.so.0
ln -sf /usr/lib64/libgio-2.0.so.0 /opt/r7-office/desktopeditors/libgio-2.0.so.0
ln -sf /usr/lib64/libGLdispatch.so.0 /opt/r7-office/desktopeditors/libGLdispatch.so.0
ln -sf /usr/lib64/libglib-2.0.so.0 /opt/r7-office/desktopeditors/libglib-2.0.so.0
ln -sf /usr/lib64/libGL.so.1 /opt/r7-office/desktopeditors/libGL.so.1
ln -sf /usr/lib64/libGLX.so.0 /opt/r7-office/desktopeditors/libGLX.so.0
ln -sf /usr/lib64/libgmodule-2.0.so.0 /opt/r7-office/desktopeditors/libgmodule-2.0.so.0
ln -sf /usr/lib64/libgobject-2.0.so.0 /opt/r7-office/desktopeditors/libgobject-2.0.so.0
ln -sf /usr/lib64/libgpg-error.so.0 /opt/r7-office/desktopeditors/libgpg-error.so.0
ln -sf /usr/lib64/libgraphite2.so.3 /opt/r7-office/desktopeditors/libgraphite2.so.3
ln -sf /usr/lib64/libgssapi_krb5.so.2 /opt/r7-office/desktopeditors/libgssapi_krb5.so.2
ln -sf /usr/lib64/libgtk-3.so.0 /opt/r7-office/desktopeditors/libgtk-3.so.0
ln -sf /usr/lib64/libharfbuzz.so.0 /opt/r7-office/desktopeditors/libharfbuzz.so.0
ln -sf /usr/lib64/libicudata.so.60 /opt/r7-office/desktopeditors/libicudata.so.60
ln -sf /usr/lib64/libicui18n.so.60 /opt/r7-office/desktopeditors/libicui18n.so.60
ln -sf /usr/lib64/libicuuc.so.60 /opt/r7-office/desktopeditors/libicuuc.so.60
ln -sf /usr/lib64/libidn2.so.0 /opt/r7-office/desktopeditors/libidn2.so.0
ln -sf /usr/lib64/libjson-glib-1.0.so.0 /opt/r7-office/desktopeditors/libjson-glib-1.0.so.0
ln -sf /usr/lib64/libk5crypto.so.3 /opt/r7-office/desktopeditors/libk5crypto.so.3
ln -sf /usr/lib64/libkeyutils.so.1 /opt/r7-office/desktopeditors/libkeyutils.so.1
ln -sf /usr/lib64/libkrb5.so.3 /opt/r7-office/desktopeditors/libkrb5.so.3
ln -sf /usr/lib64/libkrb5support.so.0 /opt/r7-office/desktopeditors/libkrb5support.so.0
ln -sf /usr/lib64/liblz4.so.1 /opt/r7-office/desktopeditors/liblz4.so.1
ln -sf /usr/lib64/liblzma.so.5 /opt/r7-office/desktopeditors/liblzma.so.5
ln -sf /usr/lib64/libmount.so.1 /opt/r7-office/desktopeditors/libmount.so.1
ln -sf /usr/lib64/libm.so.6 /opt/r7-office/desktopeditors/libm.so.6
ln -sf /usr/lib64/libpango-1.0.so.0 /opt/r7-office/desktopeditors/libpango-1.0.so.0
ln -sf /usr/lib64/libpangocairo-1.0.so.0 /opt/r7-office/desktopeditors/libpangocairo-1.0.so.0
ln -sf /usr/lib64/libpangoft2-1.0.so.0 /opt/r7-office/desktopeditors/libpangoft2-1.0.so.0
ln -sf /usr/lib64/libpci.so.3 /opt/r7-office/desktopeditors/libpci.so.3
ln -sf /usr/lib64/libpcre2-8.so.0 /opt/r7-office/desktopeditors/libpcre2-8.so.0
ln -sf /usr/lib64/libpcre.so.1 /opt/r7-office/desktopeditors/libpcre.so.1
ln -sf /usr/lib64/libpixman-1.so.0 /opt/r7-office/desktopeditors/libpixman-1.so.0
ln -sf /usr/lib64/libpng16.so.16 /opt/r7-office/desktopeditors/libpng16.so.16
ln -sf /usr/lib64/libpsl.so.5 /opt/r7-office/desktopeditors/libpsl.so.5
ln -sf /usr/lib64/libpthread.so.0 /opt/r7-office/desktopeditors/libpthread.so.0
ln -sf /usr/lib64/libresolv.so.2 /opt/r7-office/desktopeditors/libresolv.so.2
ln -sf /usr/lib64/librt.so.1 /opt/r7-office/desktopeditors/librt.so.1
ln -sf /usr/lib64/libselinux.so.1 /opt/r7-office/desktopeditors/libselinux.so.1
ln -sf /usr/lib64/libsoup-2.4.so.1 /opt/r7-office/desktopeditors/libsoup-2.4.so.1
ln -sf /usr/lib64/libsqlite3.so.0 /opt/r7-office/desktopeditors/libsqlite3.so.0
ln -sf /usr/lib64/libstdc++.so.6 /opt/r7-office/desktopeditors/libstdc++.so.6
ln -sf /usr/lib64/libstemmer.so.0 /opt/r7-office/desktopeditors/libstemmer.so.0
ln -sf /usr/lib64/libsystemd.so.0 /opt/r7-office/desktopeditors/libsystemd.so.0
ln -sf /usr/lib64/libthai.so.0 /opt/r7-office/desktopeditors/libthai.so.0
ln -sf /usr/lib64/libtracker-sparql-3.0.so.0 /opt/r7-office/desktopeditors/libtracker-sparql-3.0.so.0
ln -sf /usr/lib64/libunistring.so.2 /opt/r7-office/desktopeditors/libunistring.so.2
ln -sf /usr/lib64/libwayland-client.so.0 /opt/r7-office/desktopeditors/libwayland-client.so.0
ln -sf /usr/lib64/libwayland-egl.so.1 /opt/r7-office/desktopeditors/libwayland-egl.so.1
ln -sf /usr/lib64/libX11.so.6 /opt/r7-office/desktopeditors/libX11.so.6
ln -sf /usr/lib64/libX11-xcb.so.1 /opt/r7-office/desktopeditors/libX11-xcb.so.1
ln -sf /usr/lib64/libXau.so.6 /opt/r7-office/desktopeditors/libXau.so.6
ln -sf /usr/lib64/libxcb-render.so.0 /opt/r7-office/desktopeditors/libxcb-render.so.0
ln -sf /usr/lib64/libxcb-shm.so.0 /opt/r7-office/desktopeditors/libxcb-shm.so.0
ln -sf /usr/lib64/libxcb.so.1 /opt/r7-office/desktopeditors/libxcb.so.1
ln -sf /usr/lib64/libXcomposite.so.1 /opt/r7-office/desktopeditors/libXcomposite.so.1
ln -sf /usr/lib64/libXcursor.so.1 /opt/r7-office/desktopeditors/libXcursor.so.1
ln -sf /usr/lib64/libXdamage.so.1 /opt/r7-office/desktopeditors/libXdamage.so.1
ln -sf /usr/lib64/libXdmcp.so.6 /opt/r7-office/desktopeditors/libXdmcp.so.6
ln -sf /usr/lib64/libXext.so.6 /opt/r7-office/desktopeditors/libXext.so.6
ln -sf /usr/lib64/libXfixes.so.3 /opt/r7-office/desktopeditors/libXfixes.so.3
ln -sf /usr/lib64/libXinerama.so.1 /opt/r7-office/desktopeditors/libXinerama.so.1
ln -sf /usr/lib64/libXi.so.6 /opt/r7-office/desktopeditors/libXi.so.6
ln -sf /usr/lib64/libxkbcommon.so.0 /opt/r7-office/desktopeditors/libxkbcommon.so.0
ln -sf /usr/lib64/libxml2.so.2 /opt/r7-office/desktopeditors/libxml2.so.2
ln -sf /usr/lib64/libXrandr.so.2 /opt/r7-office/desktopeditors/libXrandr.so.2
ln -sf /usr/lib64/libXrender.so.1 /opt/r7-office/desktopeditors/libXrender.so.1
ln -sf /usr/lib64/libXss.so.1 /opt/r7-office/desktopeditors/libXss.so.1
ln -sf /usr/lib64/libXtst.so.6 /opt/r7-office/desktopeditors/libXtst.so.6
ln -sf /usr/lib64/libz.so.1 /opt/r7-office/desktopeditors/libz.so.1
ln -sf /usr/lib64/libzstd.so.1 /opt/r7-office/desktopeditors/libzstd.so.1
ln -sf /usr/lib64/libc.so.6 /opt/r7-office/desktopeditors/libc.so.6
ln -sf /usr/lib64/libgcc_s.so.1 /opt/r7-office/desktopeditors/libgcc_s.so.1
ln -sf /usr/lib64/libgcc_s.so.1 /opt/r7-office/desktopeditors/libwayland-cursor.so.0
ln -sf /usr/lib64/libudev.so.1 /opt/r7-office/desktopeditors/libudev.so.1
fi
fi
#// R7 ] CWE-427
preuninstall scriptlet (using /bin/sh):

if ps cax | grep -i "desktopeditors"
then
    echo "Программа запущена, обновление не возможно. Закройте пожалуйста программу и повторите процедуру обновления"
    notify-send "Desktop Editors" "Программа запущена, обновление не возможно. Закройте пожалуйста программу и повторите процедуру обновления"
    sleep 1
    exit 1
fi
ret=$(ps cax | grep [e]ditors_helper | wc -l)
if [ "$ret" -ne 0 ]
then
    echo "Программа запущена, обновление не возможно. Закройте пожалуйста программу и повторите процедуру обновления"
    notify-send "Desktop Editors" "Программа запущена, обновление не возможно. Закройте пожалуйста программу и повторите процедуру обновления"
    sleep 1
    exit 1
fi

set -e

action="$1"
if [ "$2" = "in-favour" ]; then
  # Treat conflict remove as an upgrade.
  action="upgrade"
fi
# Don't clean-up just for an upgrade.`
if [ "$action" = "upgrade" ] ; then
  exit 0
fi

UPDATE_MENUS="`which update-menus 2> /dev/null || true`"
if [ -x "$UPDATE_MENUS" ]; then
  update-menus
fi

#// R7 [ CWE-427
if [ -f /etc/rosa-release ]; then
COBALT=$(cat /etc/rosa-release | grep Cobalt | wc -l)
if [ "$COBALT" -ge 1 ]; then 
rm -rf /opt/r7-office/desktopeditors/libasound.so.2
rm -rf /opt/r7-office/desktopeditors/libatk-1.0.so.0
rm -rf /opt/r7-office/desktopeditors/libatk-bridge-2.0.so.0
rm -rf /opt/r7-office/desktopeditors/libatspi.so.0
rm -rf /opt/r7-office/desktopeditors/libblkid.so.1
rm -rf /opt/r7-office/desktopeditors/libbrotlicommon.so.1
rm -rf /opt/r7-office/desktopeditors/libbrotlidec.so.1
rm -rf /opt/r7-office/desktopeditors/libbz2.so.1
rm -rf /opt/r7-office/desktopeditors/libcairo-gobject.so.2
rm -rf /opt/r7-office/desktopeditors/libcairo.so.2
rm -rf /opt/r7-office/desktopeditors/libcap.so.2
rm -rf /opt/r7-office/desktopeditors/libcom_err.so.2
rm -rf /opt/r7-office/desktopeditors/libcrypto.so.1.1
rm -rf /opt/r7-office/desktopeditors/libdatrie.so.1
rm -rf /opt/r7-office/desktopeditors/libdbus-1.so.3
rm -rf /opt/r7-office/desktopeditors/libdl.so.2
rm -rf /opt/r7-office/desktopeditors/libEGL.so.1
rm -rf /opt/r7-office/desktopeditors/libepoxy.so.0
rm -rf /opt/r7-office/desktopeditors/libexpat.so.1
rm -rf /opt/r7-office/desktopeditors/libffi.so.6
rm -rf /opt/r7-office/desktopeditors/libfontconfig.so.1
rm -rf /opt/r7-office/desktopeditors/libfreetype.so.6
rm -rf /opt/r7-office/desktopeditors/libfribidi.so.0
rm -rf /opt/r7-office/desktopeditors/libgcrypt.so.20
rm -rf /opt/r7-office/desktopeditors/libgdk-3.so.0
rm -rf /opt/r7-office/desktopeditors/libgdk_pixbuf-2.0.so.0
rm -rf /opt/r7-office/desktopeditors/libgio-2.0.so.0
rm -rf /opt/r7-office/desktopeditors/libGLdispatch.so.0
rm -rf /opt/r7-office/desktopeditors/libglib-2.0.so.0
rm -rf /opt/r7-office/desktopeditors/libGL.so.1
rm -rf /opt/r7-office/desktopeditors/libGLX.so.0
rm -rf /opt/r7-office/desktopeditors/libgmodule-2.0.so.0
rm -rf /opt/r7-office/desktopeditors/libgobject-2.0.so.0
rm -rf /opt/r7-office/desktopeditors/libgpg-error.so.0
rm -rf /opt/r7-office/desktopeditors/libgraphite2.so.3
rm -rf /opt/r7-office/desktopeditors/libgssapi_krb5.so.2
rm -rf /opt/r7-office/desktopeditors/libgtk-3.so.0
rm -rf /opt/r7-office/desktopeditors/libharfbuzz.so.0
rm -rf /opt/r7-office/desktopeditors/libicudata.so.60
rm -rf /opt/r7-office/desktopeditors/libicui18n.so.60
rm -rf /opt/r7-office/desktopeditors/libicuuc.so.60
rm -rf /opt/r7-office/desktopeditors/libidn2.so.0
rm -rf /opt/r7-office/desktopeditors/libjson-glib-1.0.so.0
rm -rf /opt/r7-office/desktopeditors/libk5crypto.so.3
rm -rf /opt/r7-office/desktopeditors/libkeyutils.so.1
rm -rf /opt/r7-office/desktopeditors/libkrb5.so.3
rm -rf /opt/r7-office/desktopeditors/libkrb5support.so.0
rm -rf /opt/r7-office/desktopeditors/liblz4.so.1
rm -rf /opt/r7-office/desktopeditors/liblzma.so.5
rm -rf /opt/r7-office/desktopeditors/libmount.so.1
rm -rf /opt/r7-office/desktopeditors/libm.so.6
rm -rf /opt/r7-office/desktopeditors/libpango-1.0.so.0
rm -rf /opt/r7-office/desktopeditors/libpangocairo-1.0.so.0
rm -rf /opt/r7-office/desktopeditors/libpangoft2-1.0.so.0
rm -rf /opt/r7-office/desktopeditors/libpci.so.3
rm -rf /opt/r7-office/desktopeditors/libpcre2-8.so.0
rm -rf /opt/r7-office/desktopeditors/libpcre.so.1
rm -rf /opt/r7-office/desktopeditors/libpixman-1.so.0
rm -rf /opt/r7-office/desktopeditors/libpng16.so.16
rm -rf /opt/r7-office/desktopeditors/libpsl.so.5
rm -rf /opt/r7-office/desktopeditors/libpthread.so.0
rm -rf /opt/r7-office/desktopeditors/libresolv.so.2
rm -rf /opt/r7-office/desktopeditors/librt.so.1
rm -rf /opt/r7-office/desktopeditors/libselinux.so.1
rm -rf /opt/r7-office/desktopeditors/libsoup-2.4.so.1
rm -rf /opt/r7-office/desktopeditors/libsqlite3.so.0
rm -rf /opt/r7-office/desktopeditors/libstdc++.so.6
rm -rf /opt/r7-office/desktopeditors/libstemmer.so.0
rm -rf /opt/r7-office/desktopeditors/libsystemd.so.0
rm -rf /opt/r7-office/desktopeditors/libthai.so.0
rm -rf /opt/r7-office/desktopeditors/libtracker-sparql-3.0.so.0
rm -rf /opt/r7-office/desktopeditors/libunistring.so.2
rm -rf /opt/r7-office/desktopeditors/libwayland-client.so.0
rm -rf /opt/r7-office/desktopeditors/libwayland-egl.so.1
rm -rf /opt/r7-office/desktopeditors/libX11.so.6
rm -rf /opt/r7-office/desktopeditors/libX11-xcb.so.1
rm -rf /opt/r7-office/desktopeditors/libXau.so.6
rm -rf /opt/r7-office/desktopeditors/libxcb-render.so.0
rm -rf /opt/r7-office/desktopeditors/libxcb-shm.so.0
rm -rf /opt/r7-office/desktopeditors/libxcb.so.1
rm -rf /opt/r7-office/desktopeditors/libXcomposite.so.1
rm -rf /opt/r7-office/desktopeditors/libXcursor.so.1
rm -rf /opt/r7-office/desktopeditors/libXdamage.so.1
rm -rf /opt/r7-office/desktopeditors/libXdmcp.so.6
rm -rf /opt/r7-office/desktopeditors/libXext.so.6
rm -rf /opt/r7-office/desktopeditors/libXfixes.so.3
rm -rf /opt/r7-office/desktopeditors/libXinerama.so.1
rm -rf /opt/r7-office/desktopeditors/libXi.so.6
rm -rf /opt/r7-office/desktopeditors/libxkbcommon.so.0
rm -rf /opt/r7-office/desktopeditors/libxml2.so.2
rm -rf /opt/r7-office/desktopeditors/libXrandr.so.2
rm -rf /opt/r7-office/desktopeditors/libXrender.so.1
rm -rf /opt/r7-office/desktopeditors/libXss.so.1
rm -rf /opt/r7-office/desktopeditors/libXtst.so.6
rm -rf /opt/r7-office/desktopeditors/libz.so.1
rm -rf /opt/r7-office/desktopeditors/libzstd.so.1
rm -rf /opt/r7-office/desktopeditors/libc.so.6
rm -rf /opt/r7-office/desktopeditors/libgcc_s.so.1
rm -rf /opt/r7-office/desktopeditors/libwayland-cursor.so.0
rm -rf /opt/r7-office/desktopeditors/libudev.so.1
fi
fi
#// R7 ] CWE-427
postuninstall scriptlet (using /bin/sh):

set -e 		# fail on any error
```

#### Предустановочный скриптлет

Начнем с разбора предустановочного скриптлета:

```
preinstall scriptlet (using /bin/sh):

if ps cax | grep -i "desktopeditors"
then
    echo "Программа запущена, обновление не возможно. Закройте пожалуйста программу и повторите процедуру обновления"
    notify-send "Desktop Editors" "Программа запущена, обновление не возможно. Закройте пожалуйста программу и повторите процедуру обновления"
    sleep 1
    exit 1
fi
ret=$(ps cax | grep [e]ditors_helper | wc -l)
if [ "$ret" -ne 0 ]
then
    echo "Программа запущена, обновление не возможно. Закройте пожалуйста программу и повторите процедуру обновления"
    notify-send "Desktop Editors" "Программа запущена, обновление не возможно. Закройте пожалуйста программу и повторите процедуру обновления"
    sleep 1
    exit 1
fi
```

Подобные манипуляции представляются недопустимыми. Подавляющее большинство пакетов нормально обновляются, даже когда входящая в пакет программа запущена, ведь она и ее библиотеки уже прогружены в память, а блокировки на удаление открытого файла в Linux не делается.

Обновление пакетов часто запускается не из-под графической сессии, notify-send может не смочь послать уведомление из-за отсутствия необходимых переменных окружения.

"Не возможно", вероятно, правильно написать слитно: "невозможно". "Пожалуйста" с двух сторон выделяется запятыми.

Возможны следующие типовые сценарии установки обновления:

* запуск обновления из-под графической сессии ОС в терминале;
* запуск обновления из-под графической сессии ОС через графическую программу dnfdragora;
* запуск обновления из-под графической сессии ОС через графическую программу светофор обновлений в трее;
* оффлайн-обновление: скачивание обновлений в фоне и их установка при следующем запуске ОС;
* запуск обновления по SSH;
* запуск обновления через систему централизированного управления (ansible и аналоги).

Во многих из этих случаях подобное поведение — отказ обновляться из-за запущенности программы — неприемлем, т.к. ни один другой пакет так себя не ведет, и администратор не ожидает подобного поведения.

Если вы считаете такую проверку необходимой, просьба обосновать необходимость.

#### Постустановочный скриптлет

Перейдем к постустановочному (postinstall) скриптлету.

Создается симлинк:

`ln -sf /opt/r7-office/desktopeditors/fonts /usr/share/fonts/r7-office`

Во-первых, непонятно, зачем он нужен, зачем засорять систему, во-вторых, он не удаляется при удалении пакета. Если симлинк все же нужен, то, наверное, после его создания стоит запускать `fc-cache`. Если бы в пакет r7-office входили файлы в каталоге /usr/share/fonts, то `fc-cache` запускался бы автоматически файловым триггером RPM: [https://abf.io/import/fontconfig/blob/rosa2021.1/fontconfig.spec#lc-72](https://abf.io/import/fontconfig/blob/rosa2021.1/fontconfig.spec#lc-72).

Видимость носимых в r7-office с собой шрифтов в других программах — идея сомнительная, потому что многие носимые им с собой шрифты уже установлены в системе, а установленный пакетом в /usr/share/fonts шрифт может стать приоритетнее, чем системный. Возможно, конфигами fontconfig (/`etc/fonts/conf.d/`) можно задать приоритеты шрифтов, в т.ч. для конкретной программы.

Непонятно, зачем делаются симлинки для ROSA Cobalt. Даже с ними он там не запускается (проверял на ROSA-Desktop-DVD-x86_64-COBALT-20220630-43894.iso):

```
$ r7-office
/opt/r7-office/desktopeditors/DesktopEditors: /opt/r7-office/desktopeditors/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /opt/r7-office/desktopeditors/converter/libkernel_network.so)
```

Пример решения подобной проблемы описан здесь: [https://forum.rosalinux.ru/viewtopic.php?t=10047](https://forum.rosalinux.ru/viewtopic.php?t=10047). Может быть, есть смысл линковать libstdc++ статически, но это может раздуть размер пакета. Упомянутые на форуме пакеты можно скачать здесь:

* https://mirror.rosalinux.ru/rosa/rosa2016.1/repository/x86_64/main/updates/lib64gcc_s-gcc10_1-10-0.20200301.1-rosa2016.1.x86_64.rpm
* https://mirror.rosalinux.ru/rosa/rosa2016.1/repository/x86_64/main/updates/lib64stdc++-gcc10_6-10-0.20200301.1-rosa2016.1.x86_64.rpm

Однако описанные моменты про Cobalt не касаются М ОС и не мешают на ней.
